﻿//using System;
//using System.Collections;
//using System.Collections.Generic;

//using UnityEngine;

//public class MediaBind : BaseJavaBind
//{
//    public static bool Support
//    {
//        get
//        {
//            if (Application.isEditor)
//                return false;
//            if (Application.platform != RuntimePlatform.Android)
//                return false;

//            return true;

//        }
//    }
//    static AndroidJavaObject m_context;
//    public static AndroidJavaObject Context
//    {
//        get
//        {
//            if (m_context == null)
//            {
//                using (AndroidJavaClass root = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
//                {
//                    m_context = root.GetStatic<AndroidJavaObject>("currentActivity");
//                    bool b = m_context == null;
//                    Debug.LogWarning("====b=" + b);
//                }
//            }
//            return m_context;
//        }
//    }

//    public MediaBind(AndroidJavaObject obj) :base(obj)
//    {
       
//    }
//    public static MediaBind New()
//    {
//        var obj = new AndroidJavaObject("ml.exp.Media", Context);
//        return new MediaBind(obj);
//    }

//    public int GetID()
//    {
//        return m_instobj.Call<int>("GetID");
//    }

//    public void SetLoop(bool loop)
//    {
//        m_instobj.Call("SetLoop", loop);
//    }
//    public void OpenFormStreamingAssets(string filename, bool autoplay)
//    {
//        try
//        {
//            m_instobj.Call("Open", JavaEnum_ResMode.FromAssets, "trailer.mp4", autoplay);
//            Debug.LogWarning("====Call Open Succ.");
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call Open Error." + err.Message);

//        }
//    }
//    public void OpenFormURL(string filename, bool autoplay)
//    {
//        try
//        {
//            m_instobj.Call("Open", JavaEnum_ResMode.FromUrl, "trailer.mp4", autoplay);
//            Debug.LogWarning("====Call Open Succ.");
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call Open Error." + err.Message);

//        }
//    }
//    public void Close()
//    {
//        try
//        {
//            m_instobj.Call("Close");
//            Debug.LogWarning("====Call Close Succ.");
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call Close Error." + err.Message);

//        }
//    }
//    public void Start()
//    {
//        try
//        {
//            m_instobj.Call("Start");
//            Debug.LogWarning("====Call Start Succ.");
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call Start Error." + err.Message);

//        }
//    }
//    public override void Dispose()
//    {
//        m_instobj.Call("Release");
//        base.Dispose();
//    }
//    public void Stop()
//    {
//        try
//        {
//            m_instobj.Call("Stop");
//            Debug.LogWarning("====Call Stop Succ.");
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call Stop Error." + err.Message);

//        }
//    }
//    public State GetPrepareState()
//    {
//        try
//        {
//            var state = m_instobj.Call<AndroidJavaObject>("GetPrepareState");
//            return JavaEnum_State.TranState(state);
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call GetPrepareState Error." + err.Message);
//            return State.None;
//        }
//    }
//    public int GetVideoWidth()
//    {
//        try
//        {
//            var state = m_instobj.Call<int>("GetVideoWidth");
//            return state;
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call GetVideoWidth Error." + err.Message);
//            return 0;
//        }
//    }
//    public int GetVideoHeight()
//    {
//        try
//        {
//            var state = m_instobj.Call<int>("GetVideoHeight");
//            return state;
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call GetVideoHeight Error." + err.Message);
//            return 0;
//        }
//    }
//    public int GetVideoDuration()
//    {
//        try
//        {
//            var state = m_instobj.Call<int>("GetVideoDuration");
//            return state;
//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call GetState Error." + err.Message);
//            return 0;
//        }
//    }

//    public void SetTextureSurface(int texid)
//    {
//        try
//        {
//            m_instobj.Call("SetTextureSurface",texid);

//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call GetState Error." + err.Message);

//        }

//    }
//    public bool IsTexDone()
//    {
//        try
//        {
//            return m_instobj.Call<bool>("IsTexDone");

//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call IsTexDone Error." + err.Message);
//            return false;
//        }

//    }
//    public void UpdateTexImage()
//    {
//        try
//        {
//            m_instobj.Call("UpdateTexImage");

//        }
//        catch (System.Exception err)
//        {
//            Debug.LogError("====Call UpdateTexImage Error." + err.Message);
            
//        }

//    }
//}
//public class JavaEnum_ResMode
//{
//    static AndroidJavaClass enum_class;
//    public static readonly AndroidJavaObject Close;
//    public static readonly AndroidJavaObject FromAssets;
//    public static readonly AndroidJavaObject FromUrl;
//    static bool error = false;
//    static JavaEnum_ResMode()
//    {
//        try
//        {
//            enum_class = new AndroidJavaClass("ml.exp.Media$ResMode");
//            Close = enum_class.GetStatic<AndroidJavaObject>("Close");
//            FromAssets = enum_class.GetStatic<AndroidJavaObject>("FromAssets");
//            FromUrl = enum_class.GetStatic<AndroidJavaObject>("FromUrl");
//        }
//        catch
//        {
//            Debug.LogError("====JavaEnum_ResMode Init Error.");
//            error = true;
//        }
//    }
//}
//public enum State
//{
//    None,
//    Prepare,
//    PrepareSucc,
//    PrepareFail,
//}
//public static class JavaEnum_State
//{
//    static AndroidJavaClass enum_class;
//    public static readonly AndroidJavaObject None;
//    public static readonly AndroidJavaObject Prepare;
//    public static readonly AndroidJavaObject PrepareSucc;
//    public static readonly AndroidJavaObject PrepareFail;
//    static bool error = false;
//    static JavaEnum_State()
//    {

//        enum_class = new AndroidJavaClass("ml.exp.Media$PrepareState");
//        try
//        {
//            None = enum_class.GetStatic<AndroidJavaObject>("None");
//            Prepare = enum_class.GetStatic<AndroidJavaObject>("Prepare");
//            PrepareSucc = enum_class.GetStatic<AndroidJavaObject>("PrepareSucc");
//            PrepareFail = enum_class.GetStatic<AndroidJavaObject>("PrepareFail");
//        }
//        catch
//        {
//            Debug.LogError("====JavaEnum_State Init Error.");
//            error = true;
//        }
//    }
//    public static State TranState(AndroidJavaObject state)
//    {

//        var value = state.GetRawObject();
//        if (state.Call<bool>("equals", JavaEnum_State.None))
//        {
//            return State.None;
//        }
//        else if (state.Call<bool>("equals", JavaEnum_State.Prepare))
//        {
//            return State.Prepare;
//        }
//        else if (state.Call<bool>("equals", JavaEnum_State.PrepareSucc))
//        {
//            return State.PrepareSucc;
//        }
//        else if (state.Call<bool>("equals", JavaEnum_State.PrepareFail))
//        {
//            return State.PrepareFail;
//        }
//        Debug.LogWarning("====not match state." + state.ToString() + " vlaue" + value);
//        return State.None;
//    }
//}


